/**
 *  js 实现Map效果
 *
 */

/**
 * 将 Map 暴露给外部接口
 * @type {*}
 */
module.exports = Map;

/**
 * 定义一个Map类型的对象
 * @constructor
 */
function Map(){
    this.container = new Array();
}

/**
 * 使用原型实现Map的put 功能
 * @param key
 * @param value
 */
Map.prototype.put = function(key,value){
    this.container[key] = value;
}

/**
 * 使用原型实现Map的get功能
 * @param keg
 * @returns {*}
 */
Map.prototype.get = function(key){
    return this.container[key];
}

/**
 * 使用原型实现Map的keySet功能
 * @returns {Array}
 */
Map.prototype.keySet = function(){
    var keyset = new Array();
    var count = 0;
    for(var key in this.container){
        if(key == 'extend'){
            continue;
        }
        keyset[count] = key;
        count++;
    }
    return keyset;
}

/**
 * 使用原型实现Map的的长度
 * @returns {number}
 */
Map.prototype.size = function(){
    var count = 0;
    for(var key in this.container){
        if(key == 'extend'){
            continue;
        }
        count++;
    }
    return count;
}

/**
 * 使用原型实现Map的remove功能
 * @param key
 */
Map.prototype.remove = function(key){
    delete this.container[key];
}

/**
 * 使用原型实现Map的 字符化 功能
 * @returns {string}
 */
Map.prototype.toString = function(){
    var str = "";
    for(var i= 0,keys=this.keySet(),len = keys.length;i<len;i++){
        str = str + keys[i] +"="+this.container[keys[i]] +";\n";
    }
    return str;
}